package com.epalmpay.service.activity;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.epalmpay.bean.CouponBean;
import com.epalmpay.dto.activity.*;
import com.epalmpay.entity.Coupon;
import com.epalmpay.entity.Page;
import com.epalmpay.entity.TradeOffline;

/***
 * 活动之-优惠券服务类
 * @author tonywu
 *
 */
public interface IActivityCouponService {
	
	/**获得优惠券列表
	 * @param couponInDTO
	 * @return
	 * @throws Exception
	 */
	public List<CouponOutDTO> getCouponList(CouponInDTO couponInDTO,Page page) throws Exception;

	public CouponListOutDTO getCouponList(CouponInDTO couponInDTO) throws Exception;
	
	public List<CouponOutDTO> getCouponListByShopId(CouponInDTO couponInDTO,Page page) throws Exception;

	public List<CouponOutDTO> GetSpecialActivityCouponList(CouponInDTO couponInDTO) throws Exception;
	
	public int  saveCoupon(CouponAddInDTO couponAddInDTO,String url) throws Exception;
	
	public CouponListOutDTO  getToIndexData(CouponInDTO couponInDTO) throws Exception;
	
	public CouponDetailOutDTO  getCouponDetail(CouponInDTO couponInDTO,Page page) throws Exception;
	
	//去编辑优惠卷 根据id 查询优惠卷信息
	public Coupon queryCouponById(Coupon coupon) throws Exception;
	//修改优惠卷信息
	public void updateCoupon(CouponInDTO couponInDTO) throws Exception;
	//修改优惠卷信息
	public void updateCoupon(Coupon coupon);
	//结束优惠卷
	public void endCouponStatus(Long couponId) throws Exception;
	//结束过期的优惠券
	public void endExpireAllCoupon() throws Exception;

	//修改门店选择
	public void updateShop(Coupon coupon);

    List<Map<String, Object>> getCouponListById(List<Long> couponIdSet);
    List<Map<String, Object>> getCouponListById(Set<Long> couponIdSet);

    //准备去发优惠券
	public List<CouponBean> couponList(Coupon coupon)throws Exception;
	
	
	public Coupon findById(CouponInDTO couponInDTO);

	//优惠券核销
	public int updateVerifyCoupon(String couponCode,Long shopId, TradeOffline tradeOffline)throws Exception;


    CouponListOutDTO getShareGoodListById(CouponAddInDTO couponAddInDTO);

	CouponListOutDTO getActivityListById(CouponAddInDTO couponAddInDTO);

}
